home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1997 May / PC Plus Super CD Issue 127 (May 1997).iso / delphi2 / delphite.exe / data.z / MENUS.INT < prev    next >
Encoding:
Text File  |  1996-08-12  |  5.5 KB  |  153 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1995,96 Borland International     }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit Menus;
  11.  
  12. {$S-,W-,R-}
  13. {$C PRELOAD}
  14.  
  15. interface
  16.  
  17. uses Windows, SysUtils, Classes, Messages;
  18.  
  19. const
  20.   scShift = $2000;
  21.   scCtrl = $4000;
  22.   scAlt = $8000;
  23.   scNone = 0;
  24.  
  25. type
  26.   EMenuError = class(Exception);
  27.   TMenu = class;
  28.   TMenuBreak = (mbNone, mbBreak, mbBarBreak);
  29.   TShortCut = Low(Word)..High(Word);
  30.   TMenuChangeEvent = procedure (Sender: TObject; Rebuild: Boolean) of object;
  31. {$OldClassLayout On}
  32.   TMenuItem = class(TComponent)
  33.   protected
  34.     procedure DefineProperties(Filer: TFiler); override;
  35.     function GetHandle: HMENU;
  36.     function GetCount: Integer;
  37.     procedure GetChildren(Proc: TGetChildProc); override;
  38.     function GetItem(Index: Integer): TMenuItem;
  39.     function GetMenuIndex: Integer;
  40.     function GetParentComponent: TComponent; override;
  41.     procedure MenuChanged(Rebuild: Boolean); virtual;
  42.     function HasParent: Boolean; override;
  43.     procedure SetBreak(Value: TMenuBreak);
  44.     procedure SetCaption(const Value: string);
  45.     procedure SetChecked(Value: Boolean);
  46.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  47.     procedure SetDefault(Value: Boolean);
  48.     procedure SetEnabled(Value: Boolean);
  49.     procedure SetGroupIndex(Value: Byte);
  50.     procedure SetMenuIndex(Value: Integer);
  51.     procedure SetParentComponent(Value: TComponent); override;
  52.     procedure SetRadioItem(Value: Boolean);
  53.     procedure SetShortCut(Value: TShortCut);
  54.     procedure SetVisible(Value: Boolean);
  55.   public
  56.     constructor Create(AOwner: TComponent); override;
  57.     destructor Destroy; override;
  58.     procedure Insert(Index: Integer; Item: TMenuItem);
  59.     procedure Delete(Index: Integer);
  60.     procedure Click; virtual;
  61.     function IndexOf(Item: TMenuItem): Integer;
  62.     procedure Add(Item: TMenuItem);
  63.     procedure Remove(Item: TMenuItem);
  64.     property Command: Word;
  65.     property Handle: HMENU;
  66.     property Count: Integer;
  67.     property Items[Index: Integer]: TMenuItem; default;
  68.     property MenuIndex: Integer;
  69.     property Parent: TMenuItem;
  70.   published
  71.     property Break: TMenuBreak default mbNone;
  72.     property Caption: string;
  73.     property Checked: Boolean default False;
  74.     property Default: Boolean default False;
  75.     property Enabled: Boolean default True;
  76.     property GroupIndex: Byte default 0;
  77.     property HelpContext: THelpContext default 0;
  78.     property Hint: string;
  79.     property RadioItem: Boolean default False;
  80.     property ShortCut: TShortCut;
  81.     property Visible: Boolean default True;
  82.     property OnClick: TNotifyEvent;
  83.   end;
  84. {$OldClassLayout Off}
  85.  
  86.   TFindItemKind = (fkCommand, fkHandle, fkShortCut);
  87.  
  88.   TMenu = class(TComponent)
  89.   protected
  90.     procedure GetChildren(Proc: TGetChildProc); override;
  91.     function GetHandle: HMENU; virtual;
  92.     procedure SetChildOrder(Child: TComponent; Order: Integer); override;
  93.   public
  94.     constructor Create(AOwner: TComponent); override;
  95.     destructor Destroy; override;
  96.     function DispatchCommand(ACommand: Word): Boolean;
  97.     function DispatchPopup(AHandle: HMENU): Boolean;
  98.     function FindItem(Value: Integer; Kind: TFindItemKind): TMenuItem;
  99.     function GetHelpContext(Value: Word; ByCommand: Boolean): THelpContext;
  100.     function IsShortCut(var Message: TWMKey): Boolean;
  101.     property Handle: HMENU;
  102.     property WindowHandle: HWND;
  103.   published
  104.     property Items: TMenuItem;
  105.   end;
  106.  
  107.   TMainMenu = class(TMenu)
  108.   protected
  109.     function GetHandle: HMENU; override;
  110.   public
  111.     procedure Merge(Menu: TMainMenu);
  112.     procedure Unmerge(Menu: TMainMenu);
  113.     procedure PopulateOle2Menu(SharedMenu: HMenu; Groups: array of Integer;
  114.       var Widths: array of Longint);
  115.     procedure GetOle2AcceleratorTable(var AccelTable: HAccel;
  116.       var AccelCount: Integer; Groups: array of Integer);
  117.     procedure SetOle2MenuHandle(Handle: HMENU);
  118.   published
  119.     property AutoMerge: Boolean default False;
  120.   end;
  121.  
  122.   TPopupAlignment = (paLeft, paRight, paCenter);
  123.  
  124.   TPopupMenu = class(TMenu)
  125.   public
  126.     constructor Create(AOwner: TComponent); override;
  127.     destructor Destroy; override;
  128.     procedure Popup(X, Y: Integer); virtual;
  129.     property PopupComponent: TComponent;
  130.   published
  131.     property Alignment: TPopupAlignment default paLeft;
  132.     property AutoPopup: Boolean default True;
  133.     property HelpContext: THelpContext default 0;
  134.     property OnPopup: TNotifyEvent;
  135.   end;
  136.  
  137. function ShortCut(Key: Word; Shift: TShiftState): TShortCut;
  138. procedure ShortCutToKey(ShortCut: TShortCut; var Key: Word; var Shift: TShiftState);
  139. function ShortCutToText(ShortCut: TShortCut): string;
  140. function TextToShortCut(Text: string): TShortCut;
  141.  
  142. function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMainMenu;
  143. function NewPopupMenu(Owner: TComponent; const AName: string;
  144.   Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuitem): TPopupMenu;
  145. function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string;
  146.   Items: array of TMenuItem): TMenuItem;
  147. function NewItem(const ACaption: string; AShortCut: TShortCut;
  148.   AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word;
  149.   const AName: string): TMenuItem;
  150. function NewLine: TMenuItem;
  151.  
  152. implementation
  153.